#include "gtkcellaccessibleprivate.h"
#include "gtkcellaccessibleparent.h"
+struct _GtkCellAccessiblePrivate
+{
+ AtkObject *parent;
+};
+
static const struct {
AtkState atk_state;
GtkCellRendererState renderer_state;
static void atk_component_interface_init (AtkComponentIface *iface);
G_DEFINE_TYPE_WITH_CODE (GtkCellAccessible, gtk_cell_accessible, GTK_TYPE_ACCESSIBLE,
+ G_ADD_PRIVATE (GtkCellAccessible)
G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, atk_action_interface_init)
G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, atk_component_interface_init))
cell = GTK_CELL_ACCESSIBLE (obj);
- parent = atk_object_get_parent (obj);
- if (GTK_IS_CONTAINER_CELL_ACCESSIBLE (parent))
- return g_list_index (gtk_container_cell_accessible_get_children (GTK_CONTAINER_CELL_ACCESSIBLE (parent)), obj);
+ if (GTK_IS_CONTAINER_CELL_ACCESSIBLE (cell->priv->parent))
+ return g_list_index (gtk_container_cell_accessible_get_children (GTK_CONTAINER_CELL_ACCESSIBLE (cell->priv->parent)), obj);
parent = gtk_widget_get_accessible (gtk_accessible_get_widget (GTK_ACCESSIBLE (cell)));
if (parent == NULL)
return -1;
- return gtk_cell_accessible_parent_get_child_index (GTK_CELL_ACCESSIBLE_PARENT (parent), cell);
+ return gtk_cell_accessible_parent_get_child_index (GTK_CELL_ACCESSIBLE_PARENT (cell->priv->parent), cell);
}
static AtkStateSet *
return state_set;
}
+static AtkObject *
+gtk_cell_accessible_get_parent (AtkObject *object)
+{
+ GtkCellAccessible *cell = GTK_CELL_ACCESSIBLE (object);
+
+ return cell->priv->parent;
+}
static void
gtk_cell_accessible_class_init (GtkCellAccessibleClass *klass)
class->get_index_in_parent = gtk_cell_accessible_get_index_in_parent;
class->ref_state_set = gtk_cell_accessible_ref_state_set;
+ class->get_parent = gtk_cell_accessible_get_parent;
}
static void
gtk_cell_accessible_init (GtkCellAccessible *cell)
{
+ cell->priv = gtk_cell_accessible_get_instance_private (cell);
}
void
AtkObject *parent)
{
gtk_accessible_set_widget (GTK_ACCESSIBLE (cell), widget);
- atk_object_set_parent (ATK_OBJECT (cell), parent);
+ cell->priv->parent = parent;
}
gboolean
AtkStateType state_type,
gboolean emit_signal)
{
- AtkObject *parent;
-
/* The signal should only be generated if the value changed,
* not when the cell is set up. So states that are set
* initially should pass FALSE as the emit_signal argument.
/* If the parent is a flyweight container cell, propagate the state
* change to it also
*/
- parent = atk_object_get_parent (ATK_OBJECT (cell));
- if (GTK_IS_CONTAINER_CELL_ACCESSIBLE (parent))
- _gtk_cell_accessible_add_state (GTK_CELL_ACCESSIBLE (parent), state_type, emit_signal);
+ if (GTK_IS_CONTAINER_CELL_ACCESSIBLE (cell->priv->parent))
+ _gtk_cell_accessible_add_state (GTK_CELL_ACCESSIBLE (cell->priv->parent), state_type, emit_signal);
return TRUE;
}
AtkStateType state_type,
gboolean emit_signal)
{
- AtkObject *parent;
-
- parent = atk_object_get_parent (ATK_OBJECT (cell));
-
/* The signal should only be generated if the value changed,
* not when the cell is set up. So states that are set
* initially should pass FALSE as the emit_signal argument.
/* If the parent is a flyweight container cell, propagate the state
* change to it also
*/
- if (GTK_IS_CONTAINER_CELL_ACCESSIBLE (parent))
- _gtk_cell_accessible_remove_state (GTK_CELL_ACCESSIBLE (parent), state_type, emit_signal);
+ if (GTK_IS_CONTAINER_CELL_ACCESSIBLE (cell->priv->parent))
+ _gtk_cell_accessible_remove_state (GTK_CELL_ACCESSIBLE (cell->priv->parent), state_type, emit_signal);
return TRUE;
}